<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>29 - 数组内置对象</title>
</head>
<body>
    <script>

        // 数组就是一个内置对象


        // 真正定义数组: Array() 内置的构造函数
        // 语法:     
        // ☛   let 数组名 = new Array();





        // 数组内置对象中的方法
        let ary = ['a', 'b', 'c', 'd'];
        
        // 1. reverse() 方法
        // 作用:  用来翻转数组
        // 语法:     
        // ☛   reverse();
        console.log(ary.reverse());





        let ary1 = [1, 2, 3];
        // 2. concat() 方法
        // 作用:  将数组进行合并
        // 语法:     
        // ☛   数组名.concat(数组名);      返回的结果 ---- 数组
        console.log(ary.concat(ary1));





        // 3. join() 方法
        // 作用:  将数组中的值进行字符串拼接
        // 语法:     
        // ☛   数组名.join('字符串');      返回结果 ---- 字符串
        console.log(ary.join('|'));        // d|c|b|a





        // 4. indexOf() 方法
        // 作用:  用来获取数组中值的索引 (从左向右找)
        // 语法:     
        // ☛   数组.indexOf('值');         返回值 ---- 返回值就是索引
        console.log(ary.indexOf('a'));
        console.log(ary.indexOf('w'));     // -1





        // 5. lastIndexOf() 方法
        // 作用:  用来获取数组中值的索引 (从右向左找)
        // 语法:     
        // ☛   数组.lastIndexOf();
        console.log(ary.indexOf('a'));      // 0
        console.log(ary.lastIndexOf('a'));  // 3





        // 6. splice() 方法
        // 作用:  从数组中删除指定位置的值
        // 语法:     
        // ☛   数组.splice(索引, 数量);
        let ary2 = ['a', 'b', 'c', 'b'];
        ary2.splice(1, 3)
        console.log(ary2);





        // 7. forEach() 方法
        // 作用:  遍历数组, 和 for 循环是一样的
        // 语法:     
        // ☛   数组.forEach(function(a, b){});
        let ary3 = ['a', 'b', 'c', 'b'];
        ary3.forEach(function(item, index){      // item 表示数组中的每一个值
            console.log(item);                   // index 表示数组中每一个值的索引
        });





        // 8. filter() 方法
        // 作用:  遍历数组并对数组的值进行筛选, 将满足条件的结果找出来
        // 语法:     
        // ☛   数组.filter(function(item, index){});
        let ary4 = [1, 2, 3, 4, 5, 6];
        let res =  ary4.filter(function(item, index){
            // console.log(index);
            return item % 2 == 0;
        })
        console.log(res);       // [2, 4, 6]





        // 9. map() 方法
        // 作用:  修改数中所有的值
        // 语法:     
        // ☛   数组.map(function(item, index){});
        let ary5 = [1, 2, 3, 4, 5, 6];
        let res1 = ary5.map(function(item, index){
            // 需求: 将每一个后面拼接一个字符串: 呵呵
            return item + '呵呵';
        });
        console.log(res1);      // ['1呵呵', '2呵呵', '3呵呵', '4呵呵', '5呵呵', '6呵呵']



    </script>
</body>
</html>